/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.reporte.controlador;

import sv.com.intesal.conexion.cConexion;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.reporte.bean.TipoReporte;
import sv.com.intesal.reporte.sql.SQLTipoReporte;
import java.util.List;
import java.util.ArrayList;

/**
 *
 * @author jm
 */
public class TipoReporteControlador {

    public void mantenimiento(TipoReporte tr) throws Exception {
        PreparedStatement ps = null;
        try {
            if (tr.getCodigo_tr() == null) {
                ps = cConexion.conectar().prepareStatement(SQLTipoReporte.insert);
            } else {
                ps = cConexion.conectar().prepareCall(SQLTipoReporte.update);
                ps.setInt(7, tr.getCodigo_tr());
            }

            ps.setString(1, tr.getNombre_tr());
            ps.setString(2, tr.getExtension_tr());
            ps.setString(3, tr.getContextType());
            ps.setString(4, tr.getHeaderName());
            ps.setString(5, tr.getHeaderValue());

            if (tr.getFiltro_estado_tr() == false) {
                ps.setString(6, "A");
            } else {
                ps.setString(6, "I");
            }
            ps.executeUpdate();

            Mensaje m = new Mensaje();
            if (tr.getCodigo_tr() == null) {
                m.messageInfo(m.getIinformation());
            } else {
                m.messageInfo(m.getImodificada());
            }
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public List<TipoReporte> getComboBox() throws Exception {
        List<TipoReporte> lista = new ArrayList<TipoReporte>();
        try {
            ResultSet rs = cConexion.conectar().prepareStatement(SQLTipoReporte.getTipoReporte_Activos).executeQuery();

            while (rs.next()) {
                TipoReporte tr = new TipoReporte();
                tr.setCodigo_tr(rs.getInt("codigo_tr"));
                tr.setNombre_tr(rs.getString("nombre_tr"));
                tr.setEstado_tr(rs.getString("estado_tr"));

                tr.setFiltro_estado_tr(true);
                if (tr.getEstado_tr().equals("A")) {
                    tr.setFiltro_estado_tr(false);
                }

                tr.setContextType(rs.getString("contexttype_tr"));
                tr.setHeaderName(rs.getString("headername_tr"));
                tr.setHeaderValue(rs.getString("headervalue_tr"));
                tr.setExtension_tr(rs.getString("extension_tr"));

                lista.add(tr);
            }

            rs.close();
            return lista;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public List<TipoReporte> getAllTipoReportes() throws Exception {
        List<TipoReporte> lista = new ArrayList<TipoReporte>();
        try {
            ResultSet rs = cConexion.conectar().prepareStatement(SQLTipoReporte.getAllTipoReportes).executeQuery();

            while (rs.next()) {
                TipoReporte tr = new TipoReporte();
                tr.setCodigo_tr(rs.getInt("codigo_tr"));
                tr.setNombre_tr(rs.getString("nombre_tr"));
                tr.setEstado_tr(rs.getString("estado_tr"));

                tr.setFiltro_estado_tr(true);
                if (tr.getEstado_tr().equals("A")) {
                    tr.setFiltro_estado_tr(false);
                }

                tr.setContextType(rs.getString("contexttype_tr"));
                tr.setHeaderName(rs.getString("headername_tr"));
                tr.setHeaderValue(rs.getString("headervalue_tr"));
                tr.setExtension_tr(rs.getString("extension_tr"));

                lista.add(tr);
            }

            rs.close();
            return lista;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public TipoReporte getTipoRepote(String extension_tr) throws Exception {
        try {
            TipoReporte tr = new TipoReporte();
            PreparedStatement ps = cConexion.conectar().prepareStatement(SQLTipoReporte.getTipoReporte);
            ps.setString(1, extension_tr);

            ResultSet rs = ps.executeQuery();

            while (rs.next()) {
                tr.setCodigo_tr(rs.getInt("codigo_tr"));
                tr.setNombre_tr(rs.getString("nombre_tr"));
                tr.setEstado_tr(rs.getString("estado_tr"));

                tr.setFiltro_estado_tr(true);
                if (tr.getEstado_tr().equals("A")) {
                    tr.setFiltro_estado_tr(false);
                }

                tr.setContextType(rs.getString("contexttype_tr"));
                tr.setHeaderName(rs.getString("headername_tr"));
                tr.setHeaderValue(rs.getString("headervalue_tr"));
                tr.setExtension_tr(rs.getString("extension_tr"));
            }

            rs.close();
            return tr;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }
}